﻿using System;
using System.Linq;
using System.Windows.Forms;
using OwnZTec.LojaDelivery.Data;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Telerik.WinControls.UI;

namespace OwnZTec.LojaDelivery.UI.WinForms
{
    public partial class FrmVendasDetalhes : OwnZForm
    {

        #region -- Membros e construtores -------------------------------------------------------------------------------------------------
        public FrmVendas Pai
        { get; set; }

        public bool Edicao
        { get; set; }

        private bool _alterado;
        private decimal Total;

        private bool carregado;
        private bool carregaProduto;

        public bool pedidoIniciado;

        public tbVenda Venda
        { get; set; }

        public tbVendaDetalhe VendaDet
        { get; set; }

        public FrmVendasDetalhes()
        {
            InitializeComponent();
            this.ConfigurarFormFilho();
        }


        private void FrmVendasDetalhes_Load(object sender, EventArgs e)
        {
            this.AcceptButton = cmdAdicionar;
            txtDesconto.Text = (0).ToString("C");
            txtFrete.Text = (0).ToString("C");
            carregado = false;
            listaDetalhes = new List<VendaProdutoDetalhes>();
            CarregaCliente();
            Carregar();
            cboProdutoRefresh();
            ddlCliente.DropDownListElement.AutoCompleteSuggest.SuggestMode = SuggestMode.Contains;
            carregado = true;

        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Eventos ----------------------------------------------------------------------------------------------------------------

        private void cboGrupo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (carregado && cboGrupo.SelectedIndex >= 0)
            {
                carregaProduto = true;
                cboProdutoRefresh();
            }
            carregaProduto = false;
        }

        private void cmdAdicionar_Click(object sender, EventArgs e)
        {
            if (validarTela())
            {
                VendaProdutoDetalhes det = new VendaProdutoDetalhes();
                det.idGrupo = cboGrupo.SelectedValue.ParaInt();
                det.descGrupo = cboGrupo.Text;
                det.idProduto = cboProduto.SelectedValue.ParaInt();
                det.descProduto = cboProduto.Text;
                det.Qtde = Convert.ToInt16(txtQtde.Text);
                if (txtValor.Text.StartsWith("R$"))
                    det.Valor = Convert.ToDecimal(txtValor.Text.Substring(2).Trim());
                else
                    det.Valor = Convert.ToDecimal(txtValor.Text.Trim());
                det.ValorTotal = det.Qtde * det.Valor;

                listaDetalhes.Add(det);
                gvComanda.Refresh();
                gvComanda.DataSource = null;
                gvComanda.DataSource = listaDetalhes;

                cboProdutoRefresh();

                Total += det.ValorTotal;
                lblTotal.Text = Total.ToString();
                txtQtde.Clear();

                pedidoIniciado = true;
            }
            else
                MessageBox.Show(validaTelaTexto(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void gvComanda_CellValueChanged(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
        {

            listaDetalhes[e.RowIndex].Qtde = Convert.ToInt32(gvComanda.Rows[e.RowIndex].Cells[2].Value);
            listaDetalhes[e.RowIndex].ValorTotal = listaDetalhes[e.RowIndex].Qtde * listaDetalhes[e.RowIndex].Valor;
            Total = CalculaTotal(listaDetalhes.Sum(item => item.ValorTotal));
            lblTotal.Text = Total.ToString("C");
            gvComanda.Refresh();
            gvComanda.DataSource = null;
            gvComanda.DataSource = listaDetalhes;
        }
        
        private void cboProduto_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!carregaProduto)
            {
                int cliente = ddlCliente.SelectedValue.ParaInt();
                int produto = cboProduto.SelectedValue.ParaInt();
                int grupo = cboGrupo.SelectedValue.ParaInt();
                decimal valor = 0;
                if (cboProduto.SelectedIndex >= 0)
                {
                    //Verificar valor por cliente produto

                    foreach (var item in Contexto.Db.tbProdutoClientes.Where(p => p.idCliente == cliente).ToList())
                    {
                        if (item.idProduto == cboProduto.SelectedValue.ParaInt())
                            valor = item.valPrecoProdutoCliente;
                    }

                    //Verificar valor por cliente Grupo
                    if (valor == 0)
                    {
                        foreach (var item in Contexto.Db.tbGrupoProdutoClientes.Where(p => p.idCliente == cliente).ToList())
                        {
                            if (item.idGrupoProduto == cboGrupo.SelectedValue.ParaInt())
                                valor = item.valPrecoGrupoProdutoCliente;
                        }
                    }

                    //verificar valor por produto
                    if (valor == 0)
                        valor = Contexto.Db.tbProdutoes.First(p => p.idProduto == produto).valPrecoProduto;

                    //verificar valor por grupo
                    if (valor == 0)
                    {
                        valor = Contexto.Db.tbGrupoProdutoes.First(p => p.idGrupo == grupo).valPrecoPadrao;
                    }
                }
                txtValor.Text = valor.ToString("C");
            }
        }

        private void btnInserir_Click(object sender, EventArgs e)
        {
            Salvar();

            Close();
        }

        private void btnVisualizar_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            sb = MontaImpressao();

            var frm = new FrmMostraTela
            {
                Pai = this,
                sbImprime = sb
            };
            frm.ShowDialog();
            if (frm.DialogResult == DialogResult.OK)
            {
                Salvar();
                Close();
            }
        }

        private void ddlCliente_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
        {
            if (!carregado)
                return;

            btnInserir.Enabled = true;
            btnVisualizar.Enabled = true;
            cmdAdicionar.Enabled = true;
            cboGrupo.Enabled = true;
            cboProduto.Enabled = true;
            
            if (ddlCliente.SelectedIndex == -1)
            {
                lblPedidoAnteriorNum.Text = "Pedido Inexistente";
                lblPedidoAnteriorData.Text = "";
                lblPedidoAnteriorQtde.Text = "";
                lblPedidoAnteriorValor.Text = "";
                btnAntigoDuplicar.Enabled = false;
                btnAntigoVisualizar.Enabled = false;
            }
            else
            {
                int idCliente = ddlCliente.SelectedValue.ParaInt();
                if (Contexto.Db.tbVendas.Where(p => p.idCliente == idCliente).ToList().Count > 0)
                {
                    foreach (var item in Contexto.Db.tbVendas.Where(p => p.idCliente == idCliente).ToList().OrderByDescending(p => p.dtVenda))
                    {

                        lblPedidoAnteriorID.Text = item.idVenda.ToString();
                        lblPedidoAnteriorNum.Text = item.numeroVenda.ToString();
                        lblPedidoAnteriorData.Text = item.dtVenda.ToString("dd/MM/yyyy");
                        lblPedidoAnteriorQtde.Text = item.qtdeTotal.ToString();
                        lblPedidoAnteriorValor.Text = item.valorVenda.ToString("C");
                        btnAntigoDuplicar.Enabled = true;
                        btnAntigoVisualizar.Enabled = true;
                        break;
                    }
                }
                else
                {
                    lblPedidoAnteriorNum.Text = "Pedido Inexistente";
                    lblPedidoAnteriorData.Text = "";
                    lblPedidoAnteriorQtde.Text = "";
                    lblPedidoAnteriorValor.Text = "";
                    btnAntigoDuplicar.Enabled = false;
                    btnAntigoVisualizar.Enabled = false;
                }
            }

        }

        private void btnAntigoDuplicar_Click(object sender, EventArgs e)
        {
            int idPedido = lblPedidoAnteriorID.Text.ParaInt();

            listaDetalhes = new List<VendaProdutoDetalhes>();
            foreach (var item in Contexto.Db.tbVendaDetalhes.Where(p=>p.idVenda==idPedido).ToList())
            {
                VendaProdutoDetalhes det = new VendaProdutoDetalhes();
                int idGrupo = Contexto.Db.tbProdutoes.First(p => p.idProduto == item.idProduto).idGrupo;
                det.idGrupo = idGrupo;
                det.descGrupo = Contexto.Db.tbGrupoProdutoes.First(p=>p.idGrupo == idGrupo).desNomeGrupo;
                det.idProduto = item.idProduto;
                det.descProduto = Contexto.Db.tbProdutoes.First(p => p.idProduto == item.idProduto).desNomeProduto;
                det.Qtde = item.qtde;
                det.Valor = item.valorItem;
                det.ValorTotal = item.valorTotal;

                listaDetalhes.Add(det);
            }

                gvComanda.Refresh();
                gvComanda.DataSource = null;
                gvComanda.DataSource = listaDetalhes;

                Total = listaDetalhes.Sum(p=>p.ValorTotal);
                lblTotal.Text = Total.ToString();
                txtQtde.Clear();


            cboProdutoRefresh();
        }

        private void btnAntigoVisualizar_Click(object sender, EventArgs e)
        {
            StringBuilder sb = MontaImpressao(lblPedidoAnteriorID.Text.ParaInt());

            var frm = new FrmMostraTela
            {
                Pai = this,
                sbImprime = sb
            };
            frm.ShowDialog();
        }

        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Metodos ----------------------------------------------------------------------------------------------------------------

        private decimal CalculaTotal(decimal valor)
        {
            decimal retorno;

            retorno = valor + Convert.ToDecimal(txtFrete.Text.Substring(2)) - Convert.ToDecimal(txtDesconto.Text.Substring(2));

            return retorno;
        }

        private void Carregar()
        {
            //Carregar combos

            carregado = false;
            dtpData.Value = DateTime.Now;
            cboGrupo.DataSource = Contexto.Db.tbGrupoProdutoes;
            cboGrupo.ValueMember = "idGrupo";
            cboGrupo.DisplayMember = "desNomeGrupo";
            cboGrupo.SelectedIndex = -1;

            if (Edicao)
            {
                ddlCliente.SelectedValue = Venda.idCliente;
                dtpData.Value = Venda.dtVenda;
                txtFrete.Text = Venda.valorFrete.ToString("C");
                txtDesconto.Text = Venda.valorDesconto.ToString("C");
                chkDiario.Checked = Venda.flgAutomatica;
                lblTotal.Text = Venda.valorVenda.ToString("C");


                //Fazendo o looping para preencher os detalhes
                VendaProdutoDetalhes det = new VendaProdutoDetalhes();
                foreach (OwnZTec.LojaDelivery.Data.tbVendaDetalhe item in Contexto.Db.tbVendaDetalhes.ToList().Where(p => p.idVenda == Venda.idVenda))
                {
                    det = new VendaProdutoDetalhes();
                    int idGrupo = Contexto.Db.tbProdutoes.First(p => p.idProduto == item.idProduto).idGrupo;
                    det.idGrupo = idGrupo;
                    det.descGrupo = Contexto.Db.tbGrupoProdutoes.First(p => p.idGrupo == idGrupo).desNomeGrupo;
                    det.idProduto = item.idProduto;
                    det.descProduto = Contexto.Db.tbProdutoes.First(p=>p.idProduto == item.idProduto).desNomeProduto;
                    det.Qtde = item.qtde;
                    det.Valor = item.valorItem;
                    det.ValorTotal = item.valorTotal;

                    listaDetalhes.Add(det);
                }
                gvComanda.DataSource = listaDetalhes;

               
                
            }
            else
            {
                Venda = new tbVenda();
            }

            btnInserir.Enabled = false;
            btnVisualizar.Enabled = false;
            cmdAdicionar.Enabled = false;
            cboGrupo.Enabled = false;
            cboProduto.Enabled = false;

            _alterado = false;
            //carregado = true;
        }

        private List<DespProduto> lista;
        private List<VendaProdutoDetalhes> listaDetalhes;
        private void cboProdutoRefresh()
        {
            cboProduto.DisplayMember = "descProduto";
            cboProduto.ValueMember = "idProduto";

            lista = new List<DespProduto>();
            DespProduto novo;

            foreach (var item in Contexto.Db.tbProdutoes.ToList().Where(p => p.idGrupo == cboGrupo.SelectedValue.ParaInt()))
            {
                VendaProdutoDetalhes compara = listaDetalhes.Find(a => a.idProduto == item.idProduto);
                if (compara == null)
                {
                    novo = new DespProduto();
                    novo.idProduto = item.idProduto;
                    novo.descProduto = item.desNomeProduto;
                    lista.Add(novo);
                }
            }

            cboProduto.DataSource = lista;
            cboProduto.SelectedIndex = -1;
        }

        private void CarregaCliente()
        {
            ddlCliente.DataSource = Contexto.Db.tbClientes.ToList();
            ddlCliente.DisplayMember = "desCliente";
            ddlCliente.ValueMember = "idCliente";
            ddlCliente.SelectedIndex = -1;
        }

        private void Salvar()
        {
            //Gravando dados da Venda
            if (Venda == null)
                Venda = new tbVenda();


            Venda.idCliente = ddlCliente.SelectedValue.ParaInt();
            //Verificar qual é a última venda e a data. Se for ano posterior, entra como 1, senão, segue a numeração.
            if (Contexto.Db.tbVendas.Count() > 0)
            {
                int anoAnterior = Contexto.Db.tbVendas.ToList().Last().dtVenda.Year;
                int vendaAnterior = Contexto.Db.tbVendas.ToList().Last().numeroVenda;
                if (anoAnterior >= dtpData.Value.Year)
                    Venda.numeroVenda = vendaAnterior + 1;
                else
                    Venda.numeroVenda = 1;
            }
            else
            {
                Venda.numeroVenda = 1;
            }
            Venda.dtVenda = dtpData.Value;
            Venda.qtdeTotal = listaDetalhes.Sum(p => p.Qtde);
            Venda.valorVenda = Total;
            Venda.statusVenda = "A"; //Status A é de venda em aberto, logo após ter sido feita
            Venda.idUsuario = Contexto.idUsuarioLogado;
            Venda.flgAutomatica = chkDiario.Checked;
            Venda.valorFrete = Convert.ToDecimal(txtFrete.Text.Substring(2));
            Venda.valorDesconto = Convert.ToDecimal(txtDesconto.Text.Substring(2));
            Venda.dtUltimaImpressao = DateTime.Now;

            if (!Edicao)
                Contexto.Db.tbVendas.AddObject(Venda);

            Contexto.Db.SaveChanges();

            int ID = Venda.idVenda;


            //Gravando Detalhes

            List<VendaProdutoDetalhes> lista = (List<VendaProdutoDetalhes>)gvComanda.DataSource;

            foreach (VendaProdutoDetalhes item in lista)
            {
                if (item.idDetalhes == 0)
                {
                    VendaDet = new tbVendaDetalhe();
                    VendaDet.idVenda = ID;
                    VendaDet.idProduto = item.idProduto;
                    VendaDet.qtde = item.Qtde;
                    VendaDet.valorItem = item.Valor;
                    VendaDet.valorTotal = item.ValorTotal;
                    Contexto.Db.tbVendaDetalhes.AddObject(VendaDet);
                }
                else
                {
                    VendaDet = Contexto.Db.tbVendaDetalhes.First(x => x.idVendaDetalhe == item.idDetalhes);
                    VendaDet.qtde = item.Qtde;
                }
            }

            Contexto.Db.SaveChanges();

            Edicao = true;

            _alterado = false;

            Pai.AtualizarGrid();
        }

        private StringBuilder MontaImpressao()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("CELIA SALGADOS - (19)3254-1222-3252-6926");
            sb.AppendLine("Emitido em " + DateTime.Now.ToString());
            sb.AppendLine("5Power Sistemas");
            sb.AppendLine("PEDIDO DE COMPRA - ( SEM VALOR FISCAL )");
            sb.AppendLine("=========================================");
            int idCliente = ddlCliente.SelectedValue.ParaInt();
            sb.AppendLine("Cliente : " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).desCliente);
            sb.AppendLine("Endereco: " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).Endereco);
            sb.Append(", " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).Numero);
            sb.AppendLine("Data da Venda: " + dtpData.Value.ToShortDateString());
            sb.AppendLine("=========================================");

            sb.AppendLine("Cod    Descricao do Salgado");
            sb.AppendLine("          Qtde     Unit R$       Total R$");
            sb.AppendLine("=========================================");

            //Lopping para pegar os detalhes
            List<VendaProdutoDetalhes> lista = (List<VendaProdutoDetalhes>)gvComanda.DataSource;

            foreach (VendaProdutoDetalhes item in lista)
            {
                string zeros = string.Empty;
                //Código Produto e Descrição
                //sb.AppendLine("0004    ESFIHA DE CARNE");
                if (item.idProduto.ToString().Length < 4)
                {
                    for (int i = 0; i <= (4 - item.idProduto.ToString().Length); i++)
                    {
                        zeros += "0";
                    }
                    sb.AppendLine(zeros + item.idProduto + "    " + item.descProduto.ToUpper());
                }
                else
                    sb.AppendLine(item.idProduto + "    " + item.descProduto.ToUpper());

                zeros = string.Empty;
                //Qtde, Valor Unitário e Valor Total
                //sb.AppendLine("           3 x      1,25       =    3,75");
                sb.Append(("           ").Substring(item.Qtde.ToString().Length - 1));
                sb.Append(item.Qtde.ToString());
                sb.Append(" x");
                sb.Append(("      ").Substring(item.Valor.ToString().Length - 4));
                sb.Append(item.Valor.ToString());
                sb.Append("       =");
                sb.Append(("    ").Substring(item.ValorTotal.ToString().Length - 4));
                sb.Append(item.ValorTotal.ToString());
                sb.AppendLine("");
            }

            sb.AppendLine("=========================================");
            sb.AppendLine("Qtde Total: " + lista.Sum(p => p.Qtde).ToString() + "                 =  " + Total.ToString());
            sb.AppendLine("Desconto da Nota : " + txtDesconto.Text);
            sb.AppendLine("Acrescimo da Nota: " + txtFrete.Text);
            sb.AppendLine("");
            sb.AppendLine("****** Total da Comanda: " + Total.ToString("C") + " ******");
            sb.AppendLine("");
            sb.AppendLine("================== FIM ==================");


            return sb;
        }

        private StringBuilder MontaImpressao(int idPedido)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("CELIA SALGADOS - (19)3254-1222-3252-6926");
            sb.AppendLine("Emitido em " + Contexto.Db.tbVendas.First(p=>p.idVenda == idPedido).dtVenda.ToString("dd/MM/yyyy"));
            sb.AppendLine("5Power Sistemas");
            sb.AppendLine("PEDIDO DE COMPRA - ( SEM VALOR FISCAL )");
            sb.AppendLine("=========================================");
            int idCliente = Contexto.Db.tbVendas.First(p=>p.idVenda == idPedido).idCliente;
            sb.AppendLine("Cliente : " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).desCliente);
            sb.AppendLine("Endereco: " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).Endereco);
            sb.Append(", " + Contexto.Db.tbClientes.First(p => p.idCliente == idCliente).Numero);
            sb.AppendLine("Data da Venda: " + Contexto.Db.tbVendas.First(p=>p.idVenda == idPedido).dtVenda.ToString("dd/MM/yyyy"));
            sb.AppendLine("=========================================");

            sb.AppendLine("Cod    Descricao do Salgado");
            sb.AppendLine("          Qtde     Unit R$       Total R$");
            sb.AppendLine("=========================================");

            //Lopping para pegar os detalhes

            foreach (var item in Contexto.Db.tbVendaDetalhes.Where(p=>p.idVenda==idPedido).ToList())
            {
                string zeros = string.Empty;
                //Código Produto e Descrição
                //sb.AppendLine("0004    ESFIHA DE CARNE");
                if (item.idProduto.ToString().Length < 4)
                {
                    for (int i = 0; i <= (4 - item.idProduto.ToString().Length); i++)
                    {
                        zeros += "0";
                    }
                    sb.AppendLine(zeros + item.idProduto + "    " + Contexto.Db.tbProdutoes.First(p => p.idProduto == item.idProduto).desNomeProduto.ToUpper());
                }
                else
                    sb.AppendLine(item.idProduto + "    " + Contexto.Db.tbProdutoes.First(p => p.idProduto == item.idProduto).desNomeProduto.ToUpper());

                zeros = string.Empty;
                //Qtde, Valor Unitário e Valor Total
                //sb.AppendLine("           3 x      1,25       =    3,75");
                sb.Append(("           ").Substring(item.qtde.ToString().Length - 1));
                sb.Append(item.qtde.ToString());
                sb.Append(" x");
                sb.Append(("      ").Substring(item.valorItem.ToString().Length - 4));
                sb.Append(item.valorItem.ToString());
                sb.Append("       =");
                sb.Append(("    ").Substring(item.valorTotal.ToString().Length - 4));
                sb.Append(item.valorTotal.ToString());
                sb.AppendLine("");
            }

            sb.AppendLine("=========================================");
            sb.AppendLine("Qtde Total: " + Contexto.Db.tbVendas.First(p => p.idVenda == idPedido).qtdeTotal.ToString() + "                 =  " + Contexto.Db.tbVendas.First(p => p.idVenda == idPedido).valorVenda.ToString("C"));
            sb.AppendLine("Desconto da Nota : " + Contexto.Db.tbVendas.First(p => p.idVenda == idPedido).valorDesconto.ToString("C"));
            sb.AppendLine("Acrescimo da Nota: " + Contexto.Db.tbVendas.First(p => p.idVenda == idPedido).valorFrete.ToString("C"));
            sb.AppendLine("");
            sb.AppendLine("****** Total da Comanda: " + Contexto.Db.tbVendas.First(p => p.idVenda == idPedido).valorVenda.ToString("C") + " ******");
            sb.AppendLine("");
            sb.AppendLine("================== FIM ==================");

            return sb;
        }

        private void KeyPressEvent(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '0' || e.KeyChar == '1' || e.KeyChar == '2' || e.KeyChar == '3' || e.KeyChar == '4' || e.KeyChar == '5' ||
                e.KeyChar == '6' || e.KeyChar == '7' || e.KeyChar == '8' || e.KeyChar == '9' || e.KeyChar == ',')
            {
                e.Handled = false;
            }
            else
                e.Handled = true;
        }

        private void txt_EnterEvent(object sender, EventArgs e)
        {
            ((TextBox)sender).SelectAll();
        }

        private bool validarTela()
        {
            if(String.IsNullOrEmpty(txtQtde.Text.Trim()))
                return false;

            if (cboProduto.SelectedIndex == -1)
                return false;

            if (String.IsNullOrEmpty(txtValor.Text.Trim()))
                return false;

            if (cboGrupo.SelectedIndex == -1)
                return false;

            return true;
        }

        private string validaTelaTexto()
        {
            if (cboGrupo.SelectedIndex == -1)
                return "Selecione um grupo";

            if (cboProduto.SelectedIndex == -1)
                return "Selecione um produto";

            if (String.IsNullOrEmpty(txtQtde.Text.Trim()))
                return "Quantidade faltante";

            if (String.IsNullOrEmpty(txtValor.Text.Trim()))
                return "Valor Unitário necessário";

            return string.Empty;
        }

        #endregion ------------------------------------------------------------------------------------------------------------------------

        private void ddlCliente_SelectedIndexChanging(object sender, Telerik.WinControls.UI.Data.PositionChangingCancelEventArgs e)
        {

            if (pedidoIniciado)
            {
                DialogResult dr = MessageBox.Show("Essa ação irá cancelar o pedido atual.\nDeseja continuar?", "Comanda", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.No)
                {
                    e.Cancel = true;
                }
                else
                {
                    gvComanda.DataSource = null;
                    listaDetalhes.Clear();
                    gvComanda.DataSource = listaDetalhes;
                    cboGrupo.SelectedIndex = -1;

                    Total = 0;
                    lblTotal.Text = Total.ToString("C2");
                    txtDesconto.Text = "0,00";
                    txtFrete.Text = "0,00";
                }
            }
        }



        
    }

    public class VendaProdutoDetalhes
    {
        public int idDetalhes { get; set; }
        public int idProduto { get; set; }
        public string descProduto { get; set; }
        public int idGrupo { get; set; }
        public string descGrupo { get; set; }
        public int Qtde { get; set; }
        public decimal Valor { get; set; }
        public decimal ValorTotal { get; set; }
    }
}
